package com.orzxlee.FunctionInterface05;

import java.util.Arrays;
import java.util.Collections;
import java.util.function.Supplier;

/**
 * 第四节 函数接口
 *
 * 常用函数式接口
 *
 *     Supplier 生产型接口
 *
 *     1.Supplier接口练习
 *
 *      在测试类中定义一个方法
 *          int getMax(Supplier<Integer> sup) //用于返回一个int数组中的最大值
 *
 *
 *
 */
public class Demo {
    public static void main(String[] args) {

        //定义数组
        Integer[] arr = {19,50,28,37,1};
        Integer maxValue = getMax(() -> {
            int max = arr[0];
            for (int i = 1; i <arr.length ; i++) {
                if(arr[i]>max){
                    max = arr[i];
                }
            }
            return  max;
        });

        System.out.println(maxValue);

        System.out.println("---------");

        //Lambda 表达式获取数组最大值
        int[] arr2 = {19,50,28,37,1};
        Supplier<Integer> maxValue2= () ->  Arrays.stream(arr2).max().getAsInt();
        System.out.println(maxValue2.get());;


    }


    //返回一个int数组中的最大值 (具体的实现动作,由Lambda表达式提供)
    private static Integer  getMax(Supplier<Integer> sup){

        return sup.get();
    }

}


















